//==========================================================================
// Copyright (c) 2000-2008,  Elastos, Inc.  All Rights Reserved.
//==========================================================================
#ifndef __TESTING_CPU_H__
#define __TESTING_CPU_H__

#define PSR_I               ((UInt32)1 << 7)
#define PSR_F               ((UInt32)1 << 6)

INLINE void Cli()
{
    ASM("mrs    r0, cpsr;"
        "orr    r0, r0, %0;"
        "msr    cpsr_c, r0;"
        : :"i"(PSR_I | PSR_F) :"r0");
}

INLINE void Sti()
{
    ASM("mrs    r0, cpsr;"
        "and    r0, r0, %0;"
        "msr    cpsr_c, r0;"
        : :"i"(~(PSR_I | PSR_F)) :"r0");
}

#endif // __TESTING_CPU_H__
